Prior art two-phase commit protocol messages control operations between nodes in distributed transaction systems. These protocols are designed to insure that database consistency is maintained even in the face of failures, that is, to insure that transactions either commit or are backed out in all nodes. To accomplish this, prior systems pass messages to all nodes of a transaction system on every transaction. This is done irrespective of the activity that occurs at any given node on any given transaction. A result of this is that many messages are passed between nodes on every transaction to insure compliance with the protocols. This, in turn, consumes network time and resources and reduces the total transaction capacity that the network is able to handle. Thus, it would be desirable if certain nodes in a system could be "left out" of sync point (commit or backout) operations when appropriate to reduce the network traffic and thereby also to reduce the time that resources are in locked states.
One proposal for OSI (Open systems Interconnect) transaction processing standards allow a node to be left out by unilaterally informing a node at the beginning of one sync point operation (commit or backout) that it will be left out of the next operation. When this occurs, the node that is to be left out must not begin any independent work, such as a different transaction. While this approach aids in the reduction of network messages, it has certain disadvantages. First, the initiator of the commit or back out operation (the parent of the node to be left out) imposes unilateral restraints on the partner node without consulting the partner node. However, the partner node may need to initiate independent action and should therefore continue to be included in synchronization operations. This might occur, for example, in a peer-to-peer network, as contrasted to a client-server network. Since the decision to leave out is conclusively made at the beginning of one synchronization operation affecting the next synchronization operation and without asking for the opinion of the child. Therefore the decision to leave a partner out cannot be based on data processed during the next transaction. This requirement severely limits the number of instances where it is practical to leave a partner out. It would be desirable to allow both nodes some flexibility in reaching the final leave out decision.
To alleviate the above problems, other OSI proposals allow a left out node or subtree to start independent work by generating its own unique unit-of-work (transaction) identifier, which it propagates to it children nodes in the left out subtree of the system. If the parent decides to include the child that has started an independent transaction, both transactions are backed out, causing excessive work to be lost. Obviously, this is not a very desirable solution.
The OSI standards referred to above are described in:
ISO/IEC JTC 1/SC 21 N2608 Information Processing Systems--Open Systems Interconnect--Distributed Transaction Processing Part 1; PA0 Transaction Processing Model ISO/IEC JTC 1/SC 21 N2607 Information Processing Systems--Open Systems Interconnect--Distributed Transaction Processing Part 2: Service Definition; PA0 ISO/IEC JTC 1/SC 21 N2608 Information Processing Systems--Open Systems Interconnect--Distributed Transaction Processing Part 3: Transaction Processing Protocol Specification PA0 1) The child node's transaction program has indicated its willingness to be inactive until the sync point initiator (the parent) of the child node chooses to include it again; PA0 2) All nodes subordinate to the child node (for which it acts as sync point initiator) have indicated that they may also be left out; PA0 3) The connection to the parent, if half-duplex, is left in a send state that allows the parent to send the next message.
Another set of protocols for controlling distributed database operations are the R* protocols. The R* protocols are described in "The R* Distributed Database Management System", 1986, ACM 03625915/86/1200-0378. The R* protocols assume that an agent node is always eligible to be left out of the next transaction and will never proceed with independent work unless it receives permission to do so. Like the OSI approach, this solution assumes a client-server relationship, which imposes the will of the parent node on the child node, which is undesirable and inappropriate in some cases such as for a peer-to-peer network.